SlideShare una empresa de Scribd logo
  Introducción a Android
Índice Historia ¿Qué es Android? Arquitectura del sistema Arquitectura de las aplicaciones Entorno de desarrollo Almacenamiento de datos
Introducción a Android: un poco de historia
Introducción a Android: releases Versión Android Fecha release Android 1.5 (Cupcake) 30 abril de 2009 Android 1.6 (Donut) 15 septiembre de 2009 Android 2.0 (Eclair) 26 octubre de 2009 Android 2.2 (FroYo) Mayo de 2010 Gingerbread Finales de 2010
Introducción a Android: un poco de historia (II) Prototipo HTC Dream Nexus One Xperia x10 HTC Liquid GeeksPhone Samsung I7500
Índice Historia ¿Qué es Android? Arquitectura del sistema Arquitectura de las aplicaciones Entorno de desarrollo Almacenamiento de datos
Introducción a Android: ¿qué es Android? ¿Qué es? Conjunto de software libre que incluye sistema operativo, middleware y aplicaciones. Su objetivo es abstraer el hardware y facilitar el desarrollo de nuevas aplicaciones. SDK: soporte y API para desarrollo de aplicaciones Android. ¿Qué no es? Únicamente un dispositivo móvil Una implementación JAVA ME. Una marca de telefonía ni depende de ningún fabricante La respuesta de Google al IPhone.
Introducción a Android: ¿qué es Android? (II) Características: Conectividad: Navegador integrado, basado en WebKit  Soporte telefonía GSM, depende del hardware del teléfono Bluetooth, EDGE, 3G y WI-FI,  depende del hardware del teléfono  Software: Gráficos optimizados con OpenGL ES 1.0 (Android 2.0 OpenGL ES 2.0) SQLite para el almacenamiento de datos estructurados (Bases de datos)  Entorno de desarrollo: emulador, debugger, herramientas de profiling  Hardware y multimedia Soporte multimedia, tipo MPEG4, MP3, AMR, JPG, GIF...  Camara, GPS, Brújula, acelerómetro, depende del hardware del teléfono
Índice Historia ¿Qué es Android? Arquitectura del sistema Arquitectura de las aplicaciones Entorno de desarrollo Almacenamiento de datos
Arquitectura Android
Arquitectura Android :Linux Kernel Versión 2.6 del kernel de Linux Android aprovecha la seguridad, gestión de memoria, gestión de procesos, red y modelo de drivers Capa de abstracción entre el hardware y el software
Arquitectura Android:Linux Kernel (II) Relación versiones Linux por versión Android Versión Android Versión Linux Android 1.5 (Cupcake) 2.6.27 Android 1.6 (Donut) 2.6.29 Android 2.0 (Eclair) 2.6.29 Android 2.2 (Froyo) 2.6.32 Gingerbread  2.6.33
Arquitectura Android :Android runtime Utiliza el Kernel de Linux para la ejecución de aplicaciones, procesos y gestión de memoria. Formado por un conjunto de librerías base, para ofrecer funcionalidad elemental y de bajo nivel, escritas en C y C++ Máquina virtual Dalvik, con código preparado teniendo en cuenta la duración de las baterías y la limitación de memoria.
Arquitectura Android : Dalvik Virtual Machine Condicionantes de los dispositivos móviles: Poca duración de la batería Recursos muy escasos (memoria, cpu) Limitaciones visuales (pantallas poca resolución) Compartición y priorización de recursos Características de la DVM Usada en entornos con restricciones de memoria y procesador Herramienta dx convierte .class (clase o aplicación en JAVA) a dex Ejecuta aplicaciones en formato .dex (Dalvik Executable) Permite la ejecución de varias instancias a la vez No es una JVM, no ejecuta bytecode Clases de Java ME, AWT o Swing no están soportadas
Librerías Android (I) android.util: paquete de utilidades del core, clases de bajo nivel android.os: acceso a servicios básicos del sistema operativo: (mensajes, reloj...) android.text: mostrar y parsear (transformar) cadenas de texto android.database: gestión de las DBs, cursores, etc android.content: servicios para el acceso a distintos tipos de recursos android.view: clases para la gestión de las vistas android.widget: artefactos nativos de Android: listas, botones ... com.google.android.maps: acceso a controles nativos para mapas
Librerías Android (II) android.app: acceso al contexto de la aplicación, Actividades y API de servicios android.provider: acceso a ciertos Content Providers android.telephony: acceso a los dispositivos del telefono para comunicación (call, send SMS...) android.location: servicios basados en localización android.media: grabación y reproducción de audio, video, imagenes.. android.opengl: motor de renderización 3D android.hardware: acceso a la cámara, acelerómetro, brújula... Otras librerías: OpenGL, FreeType, SGL, libc, SQLite, SSL
Arquitectura Android : Framework de aplicaciones Proporciona una plataforma abierta para el desarrollo El desarrollador puede acceder a los dispositivos, información de ubicación, ejecutar servicios, etc, a través del framework Las aplicaciones del core utilizan este mismo framework Views, Content Providers, Managers...
Arquitectura Android: Capa de aplicaciones En esta capa de ubicarán las aplicaciones desarrolladas por el desarrollador Aplicaciones escritas en lenguaje JAVA Aplicaciones incluidas por defecto: Cliente email Gestor SMS Navegador Contactos .JAVA .CLASS .DEX javac dx JVM DVM
Índice Historia ¿Qué es Android? Arquitectura del sistema Arquitectura de las aplicaciones Entorno de desarrollo Almacenamiento de datos
Arquitectura de las aplicaciones: Componentes de aplicación Principales componentes para el  desarrollo  de aplicaciones en Android:
Entorno de desarrollo: AndroidManifest.xml Cada aplicación debe tener un archivo AndroidManifest.xml en el directorio raíz que define los componentes de aplicación (Activities, Services, etc) que se verán a continuación Da un nombre único a la aplicación, con formato package de Java (com.slashmobility.helloWorld ...) Se declaran permisos y librerías necesarios para ejecutar la aplicación <? xml   version = &quot;1.0&quot;   encoding = &quot;utf-8&quot; ?> < manifest   xmlns:android = &quot;http://schemas.android.com/apk/res/android&quot; package = &quot;prueba.Android&quot; android:versionCode = &quot;1&quot; android:versionName = &quot;1.0&quot; > < application   android:icon = &quot;@drawable/icon&quot;   android:label = &quot;@string/app_name&quot; > < activity   android:name = &quot;.HelloWord&quot; android:label = &quot;@string/app_name&quot; > < intent-filter > < action   android:name = &quot;android.intent.action.MAIN&quot;   /> < category   android:name = &quot;android.intent.category.LAUNCHER&quot;   /> </ intent-filter > </ activity > </ application > < uses-sdk   android:minSdkVersion = &quot;7&quot;   /> </ manifest >
Contiene una interfaz visual gráfica Cada Activity debe tener una responsabilidad propia (alta cohesión,  bajo acoplamiento) Una aplicación Android puede contener varias Activity, una de ellas marcada como principal Pueden usar componentes visuales, servicios, crear Intents, etc Una Activity puede invocar a otra (subActivity) Arquitectura de las aplicaciones: Componente Activity
Ciclo de vida de la Activity ANR si la Activity no responde a un evento en 5 segundos Mensaje ANR Estados de la Activity
Arquitectura de las aplicaciones: Componente Service Se ejecutan en el background (no tienen UI).  Pueden actualizar Content Providers, lanzar Intents, notificaciones... Tienen más prioridad que la Activity estándar Aplicaciones que no necesitan interacción con el usuario son buenas candidatas a ser servicios Location Manager, Media Controller, Notification Manager son ejemplos de Services.
Ciclo de vida del Service (según creación)
Arquitectura de las aplicaciones: Componente Content Provider Mecanismo genérico para compartir datos entre aplicaciones Permite desacoplar la capa de aplicación de la capa de datos (data-source agnostic) Accesible utilizando una simple URI Browser: permite leer o modificar bookmarks, historial del navegador, o búsquedas web CallLog: permite ver o modificar el historial de llamadas (entrantes o salientes) Contacts: Recupera, modifica, o almacena detalles de contactos
Arquitectura de las aplicaciones: Intents Intent: usado como mecanismo para el paso de mensajes, declara la intención de realizar una acción Utilizados para iniciar Activities o difundir mensajes. Útiles para desacoplar componentes (no necesitan conocer implementaciones)  Existen acciones nativas que pueden ser lanzadas con los Intents (crean las Actividades para realizar esas acciones)
Arquitectura de las aplicaciones: Intents (II) Contienen : Action: La acción general a realizar, tal como ACTION_VIEW, ACTION_EDIT... Data: Los datos sobre los que la acción debe operar. Estos se expresan en forma URI (Uniform Resource Identifier) Ejemplo de pares Action / Data: ACTION_VIEW: content://contacts/people/1 ACTION_DIAL: tel://687123456 ACTION_DIAL: content://contacts/people/2
Arquitectura de las aplicaciones: Intents (III) Atributos adicionales: Category: ofrece información adicional sobre el tipo de componente que debe recoger el Intent Type: tipo MIME de los datos del Intent. No es necesario por defecto Component: indica qué componente (clase) especificado en AndroidManifest.xml realizará la acción del Intent. Si se especifica, se entregará a una instancia de esa clase, si no Android buscará el componente que mejor considere. Extras: información adicional, con pares key-value
Arquitectura de las aplicaciones: Intents (V) En los Intents, se puede especificar el destinatario o no: Si se establece un destinatario (vía setComponent(ComponentName)), se le envía directamente. Si no hay destinatario, se debe incluir suficiente información para que Android determine el mejor componente candidato para ejecutar el Intent Android utiliza los Intent-filters para buscar el mejor candidato
Intents: Acciones predeterminadas ACTION_ANSWER: Abre una Actividad para gestionar llamadas entrantes. ACTION_CALL: Inicia una llamada utilizando el número pasado en el URI. ACTION_DELETE: Borra una entrada de datos especificados en el URI. ACTION_DIAL: Aparece el dialer con el número especificado. ACTION_EDIT: Invoca una actividad para editar la información del URI. ACTION_INSERT: inserta nuevos items (por ejemplo, lista de contactos) ACTION_PICK: recupera información de un item ACTION_SEARCH: Invoca una actividad para realizar búsquedas. ACTION_SENDTO: envia un mensaje a un contacto. ACTION_SEND: envía la información especificada en el URI. ACTION_VIEW: petición para ver una información de la mejor manera posible. ACTION_WEB_SEARCH: realiza búsquedas Web de la información del URI.
Arquitectura de las aplicaciones: Intent filters Intent Intent
Arquitectura de las aplicaciones: Broadcast Intents Intent Intents
Arquitectura de las aplicaciones: Componente Broadcast Receiver Broadcast Receivers son utilizados para escuchar Broadcast Intents. Para utilizarlos, necesitan ser registrados (via código o AndroidManifest.xml) Se utilizan Intent Filters para especificar que Intents se están esperando
Arquitectura de las aplicaciones: Resources Los recursos (Resources) son elementos externos que se quieren incluir y referenciar en la aplicación Ejemplos: Imagenes, videos, audio, textos... Los recursos de /res son accesibles a través de la clase R (compilada por Android automáticamente) con R.carpeta.recurso Soporte para i18n
Arquitectura de las aplicaciones: Interfaces de usuario En Android, las interfaces se construyen utilizando los objetos View y ViewGroup Las Views son el punto de interacción con el usuario Las ViewGroup son una agrupación lógica de elementos visuales
Interfaces de usuario: Layouts También conocidos como Layout Managers Son extensiones de ViewGroup Su objetivo es controlar la posición de las Views hijas en la pantalla Se pueden anidar, es decir, incluir Layouts dentro de Layouts Android proporciona una serie de Layouts por defecto
Interfaces de usuario: Layouts (II) FrameLayout: el más simple, añade cada View hija en la esquina superior izquierda. Cada vez que se añade una, tapa la anterior, diseñado para mostrar un único elemento. LinearLayout: añade cada View hija en linea recta (horizontal o vertical) RelativeLayout: añade las Views relativamente unas a otras TableLayout: añade las Views usando un grid (cuadrícula), a través de filas y columnas. Es  similar a las tablas HTML. AbsoluteLayout: añade las vistas dando coordenadas absolutas LinearLayout RelativeLayout AbsoluteLayout
Arquitectura de las aplicaciones: Notificaciones al usuario Algunos sucesos requieren ser notificados al usuario Algunas notificaciones requieren respuesta del usuario, otras no Ejemplos: batería baja, confirmación de recepción de un archivo, barras de progreso, etc Para cada tipo de notificación se requerirá una manera concreta de informar al usuario: vibración, iluminación LEDs Toast Status Ba r Dialog
Interfaces de usuario: componentes compuestos (I) Normalmente hacen referencia a Views con funcionalidad compleja añadida Para crear widgets, se pueden crear Views y añadirle métodos para la gestión de eventos, componentes visuales, etc Se pueden extender (heredar) widgets de Android por defecto, sobreescribiendo la funcionalidad que se necesite
Interfaces de usuario: componentes compuestos (II) TextView EditText con un Button ListView Spinner
Interfaces de usuario: componentes compuestos (III) DatePicker TimePicker AutoComplete
Interfaces de usuario: Menus Revelan la funcionalidad de la aplicación Tres tipos de menús de aplicación: Options Menu Context Menu Submenu
Menus: Options Menu Contiene un máximo de 6 elementos Si se necesitan más, se incluyen en el menú extendido (aparece al pusar el botón + ) La primera vez que se abra, Android llamará al método  onCreateOptionsMenu()  de la Activity Cuando el usuario presione una opción del menú, se invocará el método  onOptionsItemSelected()
Menus: Context Menu Conceptualmente similar al botón contextual del ratón en el PC Presión sobre la vista unos dos segundos Al aparecer, se invocará el método  onCreateContextMenu() Al seleccionar, se invocará el método  onContextItemSelected()
Menus: Submenus Se puede añadir dentro de cualquier menú, excepto de otro submenú Se añade a nivel de código desde el método  onCreateOptionsMenu() Igual que en los Option Menu, al pulsar de invocará el método  onOptionsItemSelected()
Arquitectura de las aplicaciones: Seguridad y permisos Seguridad basada en el Kernel de Linux, cada paquete tiene un único userID y procesos en sandbox, por lo que no pueden ser afectados entre sí Los permisos son un mecanismo a nivel de aplicación, que permiten el acceso a un recurso determinado (Red, envío de SMS..) Se pueden crear en AndroidManifest.xml < permission android:name=”com.paad.DETONATE_DEVICE” android:protectionLevel=”dangerous” android:label=”Self Destruct” android:description=”@string/detonate_description”> </ permission > Y se pueden asignar en el tag activity: < activity android:name=”.MyActivity” android:label=”@string/app_name” android:permission=”com.paad.DETONATE_DEVICE” > </ activity >
Índice Historia ¿Qué es Android? Arquitectura del sistema Arquitectura de las aplicaciones Entorno de desarrollo Almacenamiento de datos
Entorno de desarrollo: emulador Android El SDK contiene un emulador para testear las aplicaciones desarrolladas Emula tanto hardware como software El emulador soporta configuraciones AVD (Android Virtual Devices), para testear sobre distintas plataformas Android
Entorno de desarrollo: DDMS Siglas de Dalvik Debug Monitor Server Incluido en el SDK Proporciona información del estado de una instancia Android Se conecta al ADB (Android Debugger) y monitoriza una instancia de máquina virtual En IDE Eclipse se puede acceder de forma integrada
Entorno de desarrollo: Hello Android!  package com.android.helloandroid; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public   class  HelloAndroid  extends  Activity  { /** Called when the activity is first created. */ public void  onCreate(Bundle savedInstanceState)  { super.onCreate(savedInstanceState); TextView tv = new TextView(this); tv.setText(&quot;Hello, Android&quot;); setContentView(tv); } }
Índice Historia ¿Qué es Android? Arquitectura del sistema Arquitectura de las aplicaciones Entorno de desarrollo Almacenamiento de datos
Almacenamiento de datos En aplicaciones típicas de escritorio, el sistema operativo ofrece el sistema de ficheros para compartir datos entre aplicaciones En Android, los ficheros son privados por aplicación Para compartir información, se utilizan los Content Providers
Almacenamiento de datos: Preferences Técnica ágil para guardar datos simples de la aplicación Los datos se almacenan en pares key/value Usado típicamente para guardar las preferencias de la aplicación (fuentes, colores..)
Almacenamiento de datos: ficheros locales Por defecto, sólo la aplicación puede acceder a esos ficheros (permisos Unix) Acceso similar a Java estándar, se deben crear inputs y outpus streams Sólo se soportan archivos creados en la misma carpeta que la aplicación Las aplicaciones van a la ruta: /data/app (gratuitas) y /data/app-private (de pago), las nuevas versiones soportan almacenamiento en la SDCard
Almacenamiento de datos: SQLite Cada base de datos es privada para la aplicación, pero pueden acceder todas las clases de esta Android ofrece clases wrapper para almacenar la información en la base de datos (p.e. información de contactos) Las bases de datos se almacenan en la carpeta /data/data/ nombre_package /databases Para compartir la información utilizar ContentProviders
Almacenamiento de datos: SQLite (II) Base de datos Open Source Cumplimenación de estándares de BDs Ligera, no requiere excesivos recursos Las querys (consultas) se devuelven como objetos Cursor, apuntando a la información Utilizada en reproductores MP3, iPhone y iPods Para información detallada:  http://www.sqlite.org

Más contenido relacionado

PPT
Tutorial Android 1
PPT
Curso Desarrollo Android
PPT
Curso Introducción a android
PPT
Fundamentos del Desarrollo de Aplicaciones para Android
PPT
Fundamentos desarrollo de Apps para Android
PPT
Introduccion a Android
PPT
Intro. a Android Instituto Bosc de la Coma en Olot
PPT
Curso desarrollo en android
Tutorial Android 1
Curso Desarrollo Android
Curso Introducción a android
Fundamentos del Desarrollo de Aplicaciones para Android
Fundamentos desarrollo de Apps para Android
Introduccion a Android
Intro. a Android Instituto Bosc de la Coma en Olot
Curso desarrollo en android

La actualidad más candente (18)

DOCX
Cuestionario Android
PDF
Deletreando Android
DOCX
Cuestionario android
PDF
Cuestionario de android
PDF
12j sistemaandroid texto
PDF
Curso de desarrollo de aplicaciones Android - Sesión 1
PDF
"Android de la A a la Z" -- Unidad 3
PDF
"Android de la A a la Z" -- Unidad 1
DOCX
PDF
"Android de la A a la Z" -- Unidad 8
PPT
Taller de Android
PPTX
Android p
PPTX
Android
PDF
"Android de la A a la Z" -- Unidad 6
DOCX
"Android de la A a la Z" -- Unidad 2
PDF
"Android de la A a la Z" -- Unidad 4
DOC
Preguntas android madahy
DOC
Preguntas android
Cuestionario Android
Deletreando Android
Cuestionario android
Cuestionario de android
12j sistemaandroid texto
Curso de desarrollo de aplicaciones Android - Sesión 1
"Android de la A a la Z" -- Unidad 3
"Android de la A a la Z" -- Unidad 1
"Android de la A a la Z" -- Unidad 8
Taller de Android
Android p
Android
"Android de la A a la Z" -- Unidad 6
"Android de la A a la Z" -- Unidad 2
"Android de la A a la Z" -- Unidad 4
Preguntas android madahy
Preguntas android
Publicidad

Destacado (20)

PDF
202 malattie lavoro correlate e giudizio di idoneità lavorativa
PDF
Java _Capitulo_8
DOCX
Java se 8 fundamentals
PPT
Iv Business Weekend
PPT
Iv Business Weekend .
PPT
Curso Uml 1 Introduccion
PPT
Desarrollo android - 6 - multimedia
PPT
Curso Java Avanzado 3 Js Ps
PPT
V Business Weekend
PPT
Curso Uml 3.2 Proceso Unificado
PPT
Curso Java Avanzado 3 4 Js Ps Con Java Beans
PPT
Curso Java Avanzado 6 Struts
PPT
Desarrollo android - 5 - almacenamiento de datos
PPT
Curso Uml 2.6 Otros Diagramas
PPT
Curso Java Inicial 8 Conceptos Avanzados I O
PPTX
Experiencias emprendedor de apps - AppCierta
PPT
Curso Java Avanzado 5 Ejb
PPT
Curso Uml 2.3 Diagramas De InteraccióN
ODP
Introduction to Java 8
PPT
Curso Uml 2.4 Diagramas De Comportamiento
202 malattie lavoro correlate e giudizio di idoneità lavorativa
Java _Capitulo_8
Java se 8 fundamentals
Iv Business Weekend
Iv Business Weekend .
Curso Uml 1 Introduccion
Desarrollo android - 6 - multimedia
Curso Java Avanzado 3 Js Ps
V Business Weekend
Curso Uml 3.2 Proceso Unificado
Curso Java Avanzado 3 4 Js Ps Con Java Beans
Curso Java Avanzado 6 Struts
Desarrollo android - 5 - almacenamiento de datos
Curso Uml 2.6 Otros Diagramas
Curso Java Inicial 8 Conceptos Avanzados I O
Experiencias emprendedor de apps - AppCierta
Curso Java Avanzado 5 Ejb
Curso Uml 2.3 Diagramas De InteraccióN
Introduction to Java 8
Curso Uml 2.4 Diagramas De Comportamiento
Publicidad

Similar a Curso introducción a android (20)

PPT
Píldora 1: Android intro
PDF
Introducción a Android: 10 cosas importantes que hay que entender
PDF
Taller de prog. en android
PDF
Tema 4.1 Introduccion Android
PPTX
Sistema Android
PDF
Introducción a Android
PDF
Taller Android seedrocket
PDF
Android estructura del Sistema Operativo
PDF
Ingeniería Inversa en Android. Rooted Labs. Rooted CON 2012.
PDF
Presentacion para la Flagship Store de Telefónica
ODP
Android como plataforma estratégica para el desarrollo de aplicaciones
PDF
Seminario Android (Parte 1) - movilforum
PPTX
Taller deandroid
PDF
Introduccion android
PDF
¿Porque android?
PPTX
Sistema Operativo Android
PPTX
Sistema Operativo Android
PDF
Desarrollo en Android: Conceptos Básicos
DOCX
Componentes necesarios de android docx
Píldora 1: Android intro
Introducción a Android: 10 cosas importantes que hay que entender
Taller de prog. en android
Tema 4.1 Introduccion Android
Sistema Android
Introducción a Android
Taller Android seedrocket
Android estructura del Sistema Operativo
Ingeniería Inversa en Android. Rooted Labs. Rooted CON 2012.
Presentacion para la Flagship Store de Telefónica
Android como plataforma estratégica para el desarrollo de aplicaciones
Seminario Android (Parte 1) - movilforum
Taller deandroid
Introduccion android
¿Porque android?
Sistema Operativo Android
Sistema Operativo Android
Desarrollo en Android: Conceptos Básicos
Componentes necesarios de android docx

Más de Emilio Aviles Avila (17)

PPTX
Apps Ser o Estar
PPTX
Aplicaciones móviles, experiencias de emprendedor
PPTX
Charla estrategia desarrollo aplicaciones móviles Universidad Girona
PPT
Desarrollo android - 4 - arquitectura de aplicación
PPT
Desarrollo android - 3 - entorno de desarrollo
PPT
Desarrollo android - 2 - arquitectura del sistema
PPT
Desarrollo android -1 - introduccion
PPTX
El mercado de las aplicaciones moviles
PDF
Curso Taller Android Procesado Imagen
PDF
Taller Curso android WhereAmI
PDF
Curso taller android radio streaming
PDF
Como ganar dinero con las apps
PPTX
TeCHmi Service Portfolio
PPT
Curso Uml 3.1 Modelos De Desarrollo De Software
PPT
Curso Uml 2.5 Diagramas De ImplementacióN
PPT
Curso Uml 2.1 Diagramas De Cu Y Clases
PPT
Curso Uml 1 Introduccion
Apps Ser o Estar
Aplicaciones móviles, experiencias de emprendedor
Charla estrategia desarrollo aplicaciones móviles Universidad Girona
Desarrollo android - 4 - arquitectura de aplicación
Desarrollo android - 3 - entorno de desarrollo
Desarrollo android - 2 - arquitectura del sistema
Desarrollo android -1 - introduccion
El mercado de las aplicaciones moviles
Curso Taller Android Procesado Imagen
Taller Curso android WhereAmI
Curso taller android radio streaming
Como ganar dinero con las apps
TeCHmi Service Portfolio
Curso Uml 3.1 Modelos De Desarrollo De Software
Curso Uml 2.5 Diagramas De ImplementacióN
Curso Uml 2.1 Diagramas De Cu Y Clases
Curso Uml 1 Introduccion

Último (20)

PDF
clase auditoria informatica 2025.........
PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
PPTX
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
PPTX
REDES INFORMATICAS REDES INFORMATICAS.pptx
DOCX
Trabajo colaborativo Grupo #2.docxmmuhhlk
PDF
Conceptos básicos de programación tecnología.pdf
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PDF
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
DOCX
Las nuevas tecnologías en la salud - enfermería técnica.
PDF
Temas y subtemas de las fichas 1 y 2.pdf
PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
PPT
Que son las redes de computadores y sus partes
PDF
diagrama de pareto.pdf valerie giraldo diaz
PDF
Influencia-del-uso-de-redes-sociales.pdf
PPTX
Presentación de Redes de Datos modelo osi
PDF
SAP Transportation Management para LSP, TM140 Col18
PDF
Estrategia de apoyo tecnología miguel angel solis
DOCX
Trabajo colaborativo Grupo #2.docxmkkkkkkl
clase auditoria informatica 2025.........
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
REDES INFORMATICAS REDES INFORMATICAS.pptx
Trabajo colaborativo Grupo #2.docxmmuhhlk
Conceptos básicos de programación tecnología.pdf
Zarate Quispe Alex aldayir aplicaciones de internet .docx
historia_web de la creacion de un navegador_presentacion.pptx
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
Las nuevas tecnologías en la salud - enfermería técnica.
Temas y subtemas de las fichas 1 y 2.pdf
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
Que son las redes de computadores y sus partes
diagrama de pareto.pdf valerie giraldo diaz
Influencia-del-uso-de-redes-sociales.pdf
Presentación de Redes de Datos modelo osi
SAP Transportation Management para LSP, TM140 Col18
Estrategia de apoyo tecnología miguel angel solis
Trabajo colaborativo Grupo #2.docxmkkkkkkl

Curso introducción a android

  • 1. Introducción a Android
  • 2. Índice Historia ¿Qué es Android? Arquitectura del sistema Arquitectura de las aplicaciones Entorno de desarrollo Almacenamiento de datos
  • 3. Introducción a Android: un poco de historia
  • 4. Introducción a Android: releases Versión Android Fecha release Android 1.5 (Cupcake) 30 abril de 2009 Android 1.6 (Donut) 15 septiembre de 2009 Android 2.0 (Eclair) 26 octubre de 2009 Android 2.2 (FroYo) Mayo de 2010 Gingerbread Finales de 2010
  • 5. Introducción a Android: un poco de historia (II) Prototipo HTC Dream Nexus One Xperia x10 HTC Liquid GeeksPhone Samsung I7500
  • 6. Índice Historia ¿Qué es Android? Arquitectura del sistema Arquitectura de las aplicaciones Entorno de desarrollo Almacenamiento de datos
  • 7. Introducción a Android: ¿qué es Android? ¿Qué es? Conjunto de software libre que incluye sistema operativo, middleware y aplicaciones. Su objetivo es abstraer el hardware y facilitar el desarrollo de nuevas aplicaciones. SDK: soporte y API para desarrollo de aplicaciones Android. ¿Qué no es? Únicamente un dispositivo móvil Una implementación JAVA ME. Una marca de telefonía ni depende de ningún fabricante La respuesta de Google al IPhone.
  • 8. Introducción a Android: ¿qué es Android? (II) Características: Conectividad: Navegador integrado, basado en WebKit Soporte telefonía GSM, depende del hardware del teléfono Bluetooth, EDGE, 3G y WI-FI, depende del hardware del teléfono Software: Gráficos optimizados con OpenGL ES 1.0 (Android 2.0 OpenGL ES 2.0) SQLite para el almacenamiento de datos estructurados (Bases de datos) Entorno de desarrollo: emulador, debugger, herramientas de profiling Hardware y multimedia Soporte multimedia, tipo MPEG4, MP3, AMR, JPG, GIF... Camara, GPS, Brújula, acelerómetro, depende del hardware del teléfono
  • 9. Índice Historia ¿Qué es Android? Arquitectura del sistema Arquitectura de las aplicaciones Entorno de desarrollo Almacenamiento de datos
  • 11. Arquitectura Android :Linux Kernel Versión 2.6 del kernel de Linux Android aprovecha la seguridad, gestión de memoria, gestión de procesos, red y modelo de drivers Capa de abstracción entre el hardware y el software
  • 12. Arquitectura Android:Linux Kernel (II) Relación versiones Linux por versión Android Versión Android Versión Linux Android 1.5 (Cupcake) 2.6.27 Android 1.6 (Donut) 2.6.29 Android 2.0 (Eclair) 2.6.29 Android 2.2 (Froyo) 2.6.32 Gingerbread 2.6.33
  • 13. Arquitectura Android :Android runtime Utiliza el Kernel de Linux para la ejecución de aplicaciones, procesos y gestión de memoria. Formado por un conjunto de librerías base, para ofrecer funcionalidad elemental y de bajo nivel, escritas en C y C++ Máquina virtual Dalvik, con código preparado teniendo en cuenta la duración de las baterías y la limitación de memoria.
  • 14. Arquitectura Android : Dalvik Virtual Machine Condicionantes de los dispositivos móviles: Poca duración de la batería Recursos muy escasos (memoria, cpu) Limitaciones visuales (pantallas poca resolución) Compartición y priorización de recursos Características de la DVM Usada en entornos con restricciones de memoria y procesador Herramienta dx convierte .class (clase o aplicación en JAVA) a dex Ejecuta aplicaciones en formato .dex (Dalvik Executable) Permite la ejecución de varias instancias a la vez No es una JVM, no ejecuta bytecode Clases de Java ME, AWT o Swing no están soportadas
  • 15. Librerías Android (I) android.util: paquete de utilidades del core, clases de bajo nivel android.os: acceso a servicios básicos del sistema operativo: (mensajes, reloj...) android.text: mostrar y parsear (transformar) cadenas de texto android.database: gestión de las DBs, cursores, etc android.content: servicios para el acceso a distintos tipos de recursos android.view: clases para la gestión de las vistas android.widget: artefactos nativos de Android: listas, botones ... com.google.android.maps: acceso a controles nativos para mapas
  • 16. Librerías Android (II) android.app: acceso al contexto de la aplicación, Actividades y API de servicios android.provider: acceso a ciertos Content Providers android.telephony: acceso a los dispositivos del telefono para comunicación (call, send SMS...) android.location: servicios basados en localización android.media: grabación y reproducción de audio, video, imagenes.. android.opengl: motor de renderización 3D android.hardware: acceso a la cámara, acelerómetro, brújula... Otras librerías: OpenGL, FreeType, SGL, libc, SQLite, SSL
  • 17. Arquitectura Android : Framework de aplicaciones Proporciona una plataforma abierta para el desarrollo El desarrollador puede acceder a los dispositivos, información de ubicación, ejecutar servicios, etc, a través del framework Las aplicaciones del core utilizan este mismo framework Views, Content Providers, Managers...
  • 18. Arquitectura Android: Capa de aplicaciones En esta capa de ubicarán las aplicaciones desarrolladas por el desarrollador Aplicaciones escritas en lenguaje JAVA Aplicaciones incluidas por defecto: Cliente email Gestor SMS Navegador Contactos .JAVA .CLASS .DEX javac dx JVM DVM
  • 19. Índice Historia ¿Qué es Android? Arquitectura del sistema Arquitectura de las aplicaciones Entorno de desarrollo Almacenamiento de datos
  • 20. Arquitectura de las aplicaciones: Componentes de aplicación Principales componentes para el desarrollo de aplicaciones en Android:
  • 21. Entorno de desarrollo: AndroidManifest.xml Cada aplicación debe tener un archivo AndroidManifest.xml en el directorio raíz que define los componentes de aplicación (Activities, Services, etc) que se verán a continuación Da un nombre único a la aplicación, con formato package de Java (com.slashmobility.helloWorld ...) Se declaran permisos y librerías necesarios para ejecutar la aplicación <? xml version = &quot;1.0&quot; encoding = &quot;utf-8&quot; ?> < manifest xmlns:android = &quot;http://schemas.android.com/apk/res/android&quot; package = &quot;prueba.Android&quot; android:versionCode = &quot;1&quot; android:versionName = &quot;1.0&quot; > < application android:icon = &quot;@drawable/icon&quot; android:label = &quot;@string/app_name&quot; > < activity android:name = &quot;.HelloWord&quot; android:label = &quot;@string/app_name&quot; > < intent-filter > < action android:name = &quot;android.intent.action.MAIN&quot; /> < category android:name = &quot;android.intent.category.LAUNCHER&quot; /> </ intent-filter > </ activity > </ application > < uses-sdk android:minSdkVersion = &quot;7&quot; /> </ manifest >
  • 22. Contiene una interfaz visual gráfica Cada Activity debe tener una responsabilidad propia (alta cohesión, bajo acoplamiento) Una aplicación Android puede contener varias Activity, una de ellas marcada como principal Pueden usar componentes visuales, servicios, crear Intents, etc Una Activity puede invocar a otra (subActivity) Arquitectura de las aplicaciones: Componente Activity
  • 23. Ciclo de vida de la Activity ANR si la Activity no responde a un evento en 5 segundos Mensaje ANR Estados de la Activity
  • 24. Arquitectura de las aplicaciones: Componente Service Se ejecutan en el background (no tienen UI). Pueden actualizar Content Providers, lanzar Intents, notificaciones... Tienen más prioridad que la Activity estándar Aplicaciones que no necesitan interacción con el usuario son buenas candidatas a ser servicios Location Manager, Media Controller, Notification Manager son ejemplos de Services.
  • 25. Ciclo de vida del Service (según creación)
  • 26. Arquitectura de las aplicaciones: Componente Content Provider Mecanismo genérico para compartir datos entre aplicaciones Permite desacoplar la capa de aplicación de la capa de datos (data-source agnostic) Accesible utilizando una simple URI Browser: permite leer o modificar bookmarks, historial del navegador, o búsquedas web CallLog: permite ver o modificar el historial de llamadas (entrantes o salientes) Contacts: Recupera, modifica, o almacena detalles de contactos
  • 27. Arquitectura de las aplicaciones: Intents Intent: usado como mecanismo para el paso de mensajes, declara la intención de realizar una acción Utilizados para iniciar Activities o difundir mensajes. Útiles para desacoplar componentes (no necesitan conocer implementaciones) Existen acciones nativas que pueden ser lanzadas con los Intents (crean las Actividades para realizar esas acciones)
  • 28. Arquitectura de las aplicaciones: Intents (II) Contienen : Action: La acción general a realizar, tal como ACTION_VIEW, ACTION_EDIT... Data: Los datos sobre los que la acción debe operar. Estos se expresan en forma URI (Uniform Resource Identifier) Ejemplo de pares Action / Data: ACTION_VIEW: content://contacts/people/1 ACTION_DIAL: tel://687123456 ACTION_DIAL: content://contacts/people/2
  • 29. Arquitectura de las aplicaciones: Intents (III) Atributos adicionales: Category: ofrece información adicional sobre el tipo de componente que debe recoger el Intent Type: tipo MIME de los datos del Intent. No es necesario por defecto Component: indica qué componente (clase) especificado en AndroidManifest.xml realizará la acción del Intent. Si se especifica, se entregará a una instancia de esa clase, si no Android buscará el componente que mejor considere. Extras: información adicional, con pares key-value
  • 30. Arquitectura de las aplicaciones: Intents (V) En los Intents, se puede especificar el destinatario o no: Si se establece un destinatario (vía setComponent(ComponentName)), se le envía directamente. Si no hay destinatario, se debe incluir suficiente información para que Android determine el mejor componente candidato para ejecutar el Intent Android utiliza los Intent-filters para buscar el mejor candidato
  • 31. Intents: Acciones predeterminadas ACTION_ANSWER: Abre una Actividad para gestionar llamadas entrantes. ACTION_CALL: Inicia una llamada utilizando el número pasado en el URI. ACTION_DELETE: Borra una entrada de datos especificados en el URI. ACTION_DIAL: Aparece el dialer con el número especificado. ACTION_EDIT: Invoca una actividad para editar la información del URI. ACTION_INSERT: inserta nuevos items (por ejemplo, lista de contactos) ACTION_PICK: recupera información de un item ACTION_SEARCH: Invoca una actividad para realizar búsquedas. ACTION_SENDTO: envia un mensaje a un contacto. ACTION_SEND: envía la información especificada en el URI. ACTION_VIEW: petición para ver una información de la mejor manera posible. ACTION_WEB_SEARCH: realiza búsquedas Web de la información del URI.
  • 32. Arquitectura de las aplicaciones: Intent filters Intent Intent
  • 33. Arquitectura de las aplicaciones: Broadcast Intents Intent Intents
  • 34. Arquitectura de las aplicaciones: Componente Broadcast Receiver Broadcast Receivers son utilizados para escuchar Broadcast Intents. Para utilizarlos, necesitan ser registrados (via código o AndroidManifest.xml) Se utilizan Intent Filters para especificar que Intents se están esperando
  • 35. Arquitectura de las aplicaciones: Resources Los recursos (Resources) son elementos externos que se quieren incluir y referenciar en la aplicación Ejemplos: Imagenes, videos, audio, textos... Los recursos de /res son accesibles a través de la clase R (compilada por Android automáticamente) con R.carpeta.recurso Soporte para i18n
  • 36. Arquitectura de las aplicaciones: Interfaces de usuario En Android, las interfaces se construyen utilizando los objetos View y ViewGroup Las Views son el punto de interacción con el usuario Las ViewGroup son una agrupación lógica de elementos visuales
  • 37. Interfaces de usuario: Layouts También conocidos como Layout Managers Son extensiones de ViewGroup Su objetivo es controlar la posición de las Views hijas en la pantalla Se pueden anidar, es decir, incluir Layouts dentro de Layouts Android proporciona una serie de Layouts por defecto
  • 38. Interfaces de usuario: Layouts (II) FrameLayout: el más simple, añade cada View hija en la esquina superior izquierda. Cada vez que se añade una, tapa la anterior, diseñado para mostrar un único elemento. LinearLayout: añade cada View hija en linea recta (horizontal o vertical) RelativeLayout: añade las Views relativamente unas a otras TableLayout: añade las Views usando un grid (cuadrícula), a través de filas y columnas. Es similar a las tablas HTML. AbsoluteLayout: añade las vistas dando coordenadas absolutas LinearLayout RelativeLayout AbsoluteLayout
  • 39. Arquitectura de las aplicaciones: Notificaciones al usuario Algunos sucesos requieren ser notificados al usuario Algunas notificaciones requieren respuesta del usuario, otras no Ejemplos: batería baja, confirmación de recepción de un archivo, barras de progreso, etc Para cada tipo de notificación se requerirá una manera concreta de informar al usuario: vibración, iluminación LEDs Toast Status Ba r Dialog
  • 40. Interfaces de usuario: componentes compuestos (I) Normalmente hacen referencia a Views con funcionalidad compleja añadida Para crear widgets, se pueden crear Views y añadirle métodos para la gestión de eventos, componentes visuales, etc Se pueden extender (heredar) widgets de Android por defecto, sobreescribiendo la funcionalidad que se necesite
  • 41. Interfaces de usuario: componentes compuestos (II) TextView EditText con un Button ListView Spinner
  • 42. Interfaces de usuario: componentes compuestos (III) DatePicker TimePicker AutoComplete
  • 43. Interfaces de usuario: Menus Revelan la funcionalidad de la aplicación Tres tipos de menús de aplicación: Options Menu Context Menu Submenu
  • 44. Menus: Options Menu Contiene un máximo de 6 elementos Si se necesitan más, se incluyen en el menú extendido (aparece al pusar el botón + ) La primera vez que se abra, Android llamará al método onCreateOptionsMenu() de la Activity Cuando el usuario presione una opción del menú, se invocará el método onOptionsItemSelected()
  • 45. Menus: Context Menu Conceptualmente similar al botón contextual del ratón en el PC Presión sobre la vista unos dos segundos Al aparecer, se invocará el método onCreateContextMenu() Al seleccionar, se invocará el método onContextItemSelected()
  • 46. Menus: Submenus Se puede añadir dentro de cualquier menú, excepto de otro submenú Se añade a nivel de código desde el método onCreateOptionsMenu() Igual que en los Option Menu, al pulsar de invocará el método onOptionsItemSelected()
  • 47. Arquitectura de las aplicaciones: Seguridad y permisos Seguridad basada en el Kernel de Linux, cada paquete tiene un único userID y procesos en sandbox, por lo que no pueden ser afectados entre sí Los permisos son un mecanismo a nivel de aplicación, que permiten el acceso a un recurso determinado (Red, envío de SMS..) Se pueden crear en AndroidManifest.xml < permission android:name=”com.paad.DETONATE_DEVICE” android:protectionLevel=”dangerous” android:label=”Self Destruct” android:description=”@string/detonate_description”> </ permission > Y se pueden asignar en el tag activity: < activity android:name=”.MyActivity” android:label=”@string/app_name” android:permission=”com.paad.DETONATE_DEVICE” > </ activity >
  • 48. Índice Historia ¿Qué es Android? Arquitectura del sistema Arquitectura de las aplicaciones Entorno de desarrollo Almacenamiento de datos
  • 49. Entorno de desarrollo: emulador Android El SDK contiene un emulador para testear las aplicaciones desarrolladas Emula tanto hardware como software El emulador soporta configuraciones AVD (Android Virtual Devices), para testear sobre distintas plataformas Android
  • 50. Entorno de desarrollo: DDMS Siglas de Dalvik Debug Monitor Server Incluido en el SDK Proporciona información del estado de una instancia Android Se conecta al ADB (Android Debugger) y monitoriza una instancia de máquina virtual En IDE Eclipse se puede acceder de forma integrada
  • 51. Entorno de desarrollo: Hello Android! package com.android.helloandroid; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class HelloAndroid extends Activity { /** Called when the activity is first created. */ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(this); tv.setText(&quot;Hello, Android&quot;); setContentView(tv); } }
  • 52. Índice Historia ¿Qué es Android? Arquitectura del sistema Arquitectura de las aplicaciones Entorno de desarrollo Almacenamiento de datos
  • 53. Almacenamiento de datos En aplicaciones típicas de escritorio, el sistema operativo ofrece el sistema de ficheros para compartir datos entre aplicaciones En Android, los ficheros son privados por aplicación Para compartir información, se utilizan los Content Providers
  • 54. Almacenamiento de datos: Preferences Técnica ágil para guardar datos simples de la aplicación Los datos se almacenan en pares key/value Usado típicamente para guardar las preferencias de la aplicación (fuentes, colores..)
  • 55. Almacenamiento de datos: ficheros locales Por defecto, sólo la aplicación puede acceder a esos ficheros (permisos Unix) Acceso similar a Java estándar, se deben crear inputs y outpus streams Sólo se soportan archivos creados en la misma carpeta que la aplicación Las aplicaciones van a la ruta: /data/app (gratuitas) y /data/app-private (de pago), las nuevas versiones soportan almacenamiento en la SDCard
  • 56. Almacenamiento de datos: SQLite Cada base de datos es privada para la aplicación, pero pueden acceder todas las clases de esta Android ofrece clases wrapper para almacenar la información en la base de datos (p.e. información de contactos) Las bases de datos se almacenan en la carpeta /data/data/ nombre_package /databases Para compartir la información utilizar ContentProviders
  • 57. Almacenamiento de datos: SQLite (II) Base de datos Open Source Cumplimenación de estándares de BDs Ligera, no requiere excesivos recursos Las querys (consultas) se devuelven como objetos Cursor, apuntando a la información Utilizada en reproductores MP3, iPhone y iPods Para información detallada: http://www.sqlite.org